#include "json.h"
#include <QFile>

QJson::Parser Rt::Json::parser;
QJson::Serializer Rt::Json::serializer;

using namespace Rt;

QVariant Json::load(const QString &filename, bool *ok)
{
    QFile f(filename);
    if (Q_UNLIKELY(!f.open(QIODevice::ReadOnly))) {
        if (ok)
            *ok = false;
        return QVariant();
    }
    QVariant res = parser.parse(f.readAll(), ok);
    f.close();
    return res;
}

bool Json::save(const QString &filename, const QVariant &jsonData)
{
    bool ok;
    QByteArray data = serializer.serialize(jsonData, &ok);
    if (!ok)
        return false;
    QFile f(filename);
    if (Q_UNLIKELY(!f.open(QIODevice::WriteOnly)))
        return false;
    f.write(data);
    f.close();
    return true;
}
